package com.hxkj.client.service;

import com.hxkj.domain.po.LabelExt;
import com.hxkj.domain.po.LabelManagement;
import com.hxkj.domain.po.LabelUsageInfo;
import com.hxkj.domain.vo.LabelManagementVO;
import com.platform.common.domain.result.ParameterDataStruct;
import com.platform.common.domain.result.ResultDataStruct;
import com.platform.common.domain.result.ResultMessageStruct;
import com.platform.common.domain.result.ResultPageStruct;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.List;
import java.util.Map;

@FeignClient(name = "cms-management")
public interface LabelConfServiceClient {

    @RequestMapping(value = "/label/getLabelList", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultPageStruct<LabelManagementVO> getLabelList(@RequestBody ParameterDataStruct<LabelManagement> parameterDataStruct);

    @RequestMapping(value = "/label/getLabelInfo", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultDataStruct<LabelManagement> getLabelInfo(@RequestBody LabelManagement labelManagement);


    @RequestMapping(value = "/label/saveLabel", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct saveLabel(@RequestBody LabelManagement labelManagement);

    @RequestMapping(value = "/label/save", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct save(@RequestBody Map<String, Object> map);

    /**
     * 修改标签
     * @param map
     * @return
     */
    @RequestMapping(value = "/label/modifyLabel", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct modifyLabel(@RequestBody Map<String, Object> map);

    /**
     * 修改标签
     * @param labelIds
     * @return
     */
    @RequestMapping(value = "/label/deleteLabel", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct deleteLabel(@RequestBody String labelIds);

    @RequestMapping(value = "/label/editLabelPlus", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct editLabelPlus(@RequestBody Map<String, Object> map);


    /****************************标签扩展表业务处理*************************************/

    /**
     * @Description 获取标签列表
     * @param labelExt
     * @return
     */
    @RequestMapping(value = "/label/getLabelExtList", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultDataStruct<List<LabelExt>> getLabelExtList(@RequestBody LabelExt labelExt);

    /**
     * 新增标签
     * @param labelExt
     * @return
     */
    @RequestMapping(value = "/label/saveLabelExt", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct saveLabelExt(@RequestBody LabelExt labelExt);

    /**
     * 修改标签
     * @param labelExt
     * @return
     */
    @RequestMapping(value = "/label/modifyLabelExt", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct modifyLabelExt(@RequestBody LabelExt labelExt);

    /**
     * 修改标签
     * @param labelExt
     * @return
     */
    @RequestMapping(value = "/label/deleteLabelExt", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct deleteLabelExt(@RequestBody LabelExt labelExt);


    /****************************标签用法表业务处理*************************************/

    /**
     * @Description 获取标签列表
     * @param labelUsageInfo
     * @return
     */
    @RequestMapping(value = "/label/getLabelUsageInfoList", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultDataStruct<List<LabelUsageInfo>> getLabelUsageInfoList(@RequestBody LabelUsageInfo labelUsageInfo);

    /**
     * 新增标签
     * @param labelUsageInfo
     * @return
     */
    @RequestMapping(value = "/label/saveLabelUsageInfo", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct saveLabelUsageInfo(@RequestBody LabelUsageInfo labelUsageInfo);

    /**
     * 修改标签
     * @param labelUsageInfo
     * @return
     */
    @RequestMapping(value = "/label/modifyLabelUsageInfo", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct modifyLabelUsageInfo(@RequestBody LabelUsageInfo labelUsageInfo);

    /**
     * 修改标签
     * @param labelUsageInfo
     * @return
     */
    @RequestMapping(value = "/label/deleteLabelUsageInfo", method = RequestMethod.POST, consumes = "application/json;charset=utf-8")
    ResultMessageStruct deleteLabelUsageInfo(@RequestBody LabelUsageInfo labelUsageInfo);
}
